/**
 * @file bsp_dac.h
 * @brief DAC封装驱动
 * @author wangh (wanghuan3037@fiberhome.com)
 * @version 1.0
 * @date 2020-10-17
 * @copyright Copyright (c) 2020  烽火通信
 */
#ifndef __BSP_DAC_H
#define __BSP_DAC_H
#include <stdint.h>
#include <stdbool.h>
#include "bsp.h"
#include "bsp_gpio.h"

/**
 * @brief DAC对象结构体
 */
typedef struct Dac_s
{
    Gpio_t DacPin;          ///< DAC引脚
    uint8_t channel;        ///< DAC通道
    bool IsInitialized;     ///< DAC通道初始化状态
} Dac_t;

/**
 * @brief DAC初始化
 * @param[in]  obj          dac对象
 * @param[in]  dacPin       dac引脚
 * @return int8_t 
 * - @b Success : @ref BSP_SUCCESS \n
 * - @b Fail
 * - @ref BSP_ERROR_ALREADY_INIT - 已初始化
 * - @ref BSP_ERROR_NOT_SUPPORTED - 引脚不支持
 * - @ref BSP_ERROR_INVALID_PARAM - 非法引脚
 */
int8_t DacInit(Dac_t *obj, PinNames dacPin);

/**
 * @brief DAC去初始化
 * @param[in]  obj          dac对象
 */
void DacDeInit(Dac_t *obj);

/**
 * @brief 设置DAC通道输出电压
 * @param[in]  obj          dac对象
 * @param[in]  vol          dac输出电压（0~3.3V）
 * @return int8_t 
 * - @b Success : @ref BSP_SUCCESS \n
 * - @b Fail
 * - @ref BSP_ERROR_NO_INIT - 已初始化
 * - @ref BSP_ERROR_INVALID_PARAM - 电压越限
 */
int8_t DacSetVol( Dac_t *obj, float vol );

#endif	 // __BSP_DAC_H 

/*********** (C) COPYRIGHT 2020 FiberHome *****END OF FILE****/
